/**
 * 
 */
package entities;

import java.io.Serializable;

/**
 *@author Juan Alapin - 324507516
 *@author Giora Yaffe - 036551281
 *@author Shachar Gritzman - 300174026
 *@author Nir Porat - 021515580
*/
public class CProcess implements Serializable 
{
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	/**
	 * The Process Details
	 * processID - Process Details
	 * initiatorID - The Process Initiator
	 * estimatorID - The Process Estimator
	 * chairmanID - The Process Committee Chairman
	 * execLeaderID - The Process Execution Leader
	 * testerID - The Process Tester
	 * status - The Process Status
	 * currentPhase - The Current Phase Of The Process [1,5]
	 */
	
	private int processID;
	private int initiatorID;
	private int estimatorID;
	private int chairmanID;
	private int execLeaderID;
	private int testerID;
	private int supervisorID;
	private String status;
	private int currentPhase;
	private int responsableOK;
	private String startDate;
	private String endDate;
	
	/**
	 * Constructor
	 * @param procID - The process ID
	 * @param initID - Initiator's ID
	 */
	public CProcess(int procID,int initID)
	{
	this(procID,initID,0,0,0,0,0,"Active",0, 0);
	}
	
	/**
	 * Constructor
	 * @param procID - The process ID
	 * @param initID - Initiator's ID
	 * @param supervisorID - Supervisor's ID
	 */
	public CProcess(int procID,int initID,int supervID)
	{
	this(procID,initID,supervID,0,0,0,0,"Active",0, 0);
	}
	
	/**
	 * Constructor
	 * @param procID - The process ID
	 * @param initID - Initiator's ID
	 * @param supervisorID - Supervisor's ID
	 * @param estID - Estimator's ID
	 */
	public CProcess(int procID,int initID,int supervID,int estID)
	{
	this(procID,initID,supervID,estID,0,0,0,"Active",0,0);
	}
	
	/**
	 * Constructor
	 * @param procID - The process ID
	 * @param initID - Initiator's ID
	 * @param supervisorID - Supervisor's ID
	 * @param estID - Estimator's ID
	 * @param chairID - Chairman's ID
	 */
	public CProcess(int procID,int initID,int supervID,int estID,int chairID)
	{
	this(procID,initID,supervID,estID,chairID,0,0,"Active",0, 0);
	}	
	
	/**
	 * Constructor
	 * @param procID - The process ID
	 * @param initID - Initiator's ID
	 * @param supervisorID - Supervisor's ID
	 * @param estID - Estimator's ID
	 * @param chairID - Chairman's ID
	 * @param execLeadID - ExecutionLeader's ID
	 */
	public CProcess(int procID,int initID,int supervID,int estID,int chairID,int execLeadID)
	{
	this(procID,initID,supervID,estID,chairID,execLeadID,0,"Active",0, 0);
	}
	
	/**
	 * Constructor
	 * @param procID - The process ID
	 * @param initID - Initiator's ID
	 * @param supervisorID - Supervisor's ID
	 * @param estID - Estimator's ID
	 * @param chairID - Chairman's ID
	 * @param execLeadID - ExecutionLeader's ID
	 * @param stat - Process's status
	 */
	public CProcess(int procID,int initID,int supervID,int estID,int chairID,int execLeadID,String stat)
	{
	this(procID,initID,supervID,estID,chairID,execLeadID,0,stat,0, 0);
	}
	
	/**
	 * Constructor
	 * @param procID - The process ID
	 * @param initID - Initiator's ID
	 * @param supervisorID - Supervisor's ID
	 * @param estID - Estimator's ID
	 * @param chairID - Chairman's ID
	 * @param execLeadID - ExecutionLeader's ID
	 * @param testID - Tester's ID
	 * @param stat - Process's status
	 * @param curPh - Process current phase
	 * @param res - is determined responsible for phase 
	 */
	public CProcess(int procID,int initID,int supervID,int estID,int chairID,int execLeadID,int testID,String stat,int curPh,int res)
	{
	processID = procID;
	initiatorID = initID;
	supervisorID = supervID;
	estimatorID = estID;
	chairmanID =chairID;
	execLeaderID = execLeadID;
	testerID = testID;
	setStatus(stat);
	currentPhase = curPh;
	responsableOK=res;
	}
	
	
	
	/**
	 *Getter - get processID 
	 *returns the process's ID
	 */
	public int getprocessID()
	{
		return(processID);
	}
	
	/**
	 *Getter - get initiatorID 
	 *returns the process's initiator ID
	 */
	public int getinitiatorID()
	{
		return(initiatorID);
	}
	
	/**
	 *Getter - get estimatorID 
	 *returns the process's estimator ID
	 */
	public int getestimatorID()
	{
		return(estimatorID);
	}
	
	
	/**
	 *Setter - set estimatorID
	 *sets the process's estimator ID
	 *
	 */
	public void setestimatorID(int workerID)
	{
		estimatorID = workerID;
	}
	
	/**
	 *Getter - get execLeaderID
	 *returns the process's execution leader ID
	 */
	public int getexecLeaderID()
	{
		return(execLeaderID);
	}
	
	
	/**
	 *Setter - set execLeaderID
	 *sets the process's execution leader ID
	 *
	 */
	public void setexecLeaderID(int workerID)
	{
		execLeaderID = workerID;
	}
	
	/**
	 *Getter - get testerID 
	 *returns the process's tester ID
	 */
	public int gettesterID()
	{
		return(testerID);
	}
	
	
	/**
	 *Setter - set testerID
	 *sets the process's tester ID
	 *
	 */
	public void settesterID(int workerID)
	{
		testerID = workerID;
	}
	
	/**
	 *Getter - get supervisorID 
	 *returns the process's supervisor ID
	 */
	public int getsupervisorID()
	{
		return(supervisorID);
	}
	
	
	/**
	 *Setter - set supervisorID
	 *sets the process's supervisor ID
	 *
	 */
	public void setsupervisorID(int workerID)
	{
		supervisorID = workerID;
	}

	public String getStatus() {
		return status;
	}

	public void setStatus(String status) {
		this.status = status;
	}

	public int getChairmanID() {
		return chairmanID;
	}

	public void setChairmanID(int chairmanID) {
		this.chairmanID = chairmanID;
	}

	public int getCurrentPhase() {
		return currentPhase;
	}

	public void setCurrentPhase(int currentPhase) {
		this.currentPhase = currentPhase;
	}

	public int getResponsableOK() {
		return responsableOK;
	}

	public void setResponsableOK(int responsableOK) {
		this.responsableOK = responsableOK;
	}

	public String getStartDate() {
		return startDate;
	}

	public void setStartDate(String startDate) {
		this.startDate = startDate;
	}

	public String getEndDate() {
		return endDate;
	}

	public void setEndDate(String endDate) {
		this.endDate = endDate;
	}

}